﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QldtSdh.GUI.DaoTao
{
    using BLL;
    using DAL;
    using DAL.Models;
    using QldtSdh.GUI.Common;
    using QldtSdh.GUI.Utils;
    using QldtSdh.Utils;

    public partial class FormLopHocPhan_ChiTiet_PhanCongGiangDay : BaseDialog
    {
        private List<GiangVien> _GiangVienCollection;
        private LopHocPhan _LopHocPhan;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="lopHocPhan_PhanCongGiangDay"></param>
        /// <param name="lstGiangVien">Danh sách giảng viên từ đó có thể chọn lựa</param>
        public FormLopHocPhan_ChiTiet_PhanCongGiangDay(LopHocPhan lopHocPhan, List<GiangVien> lstGiangVien)
        {
            InitializeComponent();

            this._LopHocPhan = lopHocPhan;
            this._GiangVienCollection = lstGiangVien;
            gridPhanCongGiangDay.SetDataGridViewAsReadonly(rowHeadersVisible: false, columnHeadersVisible: true);
            bsGiangVien.DataSource = lstGiangVien;
            gridPhanCongGiangDay.SetDataSource(bsGiangVien);
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            #region Thu thập dữ liệu
            GiangVien giangVien = null;
            if (bsGiangVien.Current != null)
                giangVien = bsGiangVien.Current as GiangVien;
            if (giangVien == null)
            {
                DialogUtils.ShowMessage("Bạn phải chọn một giảng viên trong danh sách");
                return;
            }

            int soGio = (int)nudSoGio.Value;
            if (soGio < 0)
            {
                DialogUtils.ShowMessage("Thông tin số giờ không hợp lệ");
                nudSoGio.Focus();
                return;
            }
            #endregion

            #region Thực hiện bổ sung
            try
            {
                BizPhanCongGiangDay.Insert(_LopHocPhan.MaLopHocPhanGUID, giangVien.MaGiangVien, soGio);
                Program.FormMain.Notify("Quản lý đào tạo Sau đại học",
                    string.Format("Đã bổ sung mục phân công giảng dạy thành công\r\nGiảng viên: {0}\r\nLớp học phần: {1}\r\nSố giờ: {2}",
                    giangVien.GiangVienDesc, _LopHocPhan.TenLopHocPhanFull, soGio));

                if (chkTiepTucBoSung.Checked)
                {
                    bsGiangVien.DataSource = null;
                    _GiangVienCollection.Remove(giangVien);
                    bsGiangVien.DataSource = _GiangVienCollection;
                    nudSoGio.Value = 0;
                }
                else
                    this.Close();
            }
            catch (Exception exc)
            {
                DialogUtils.ShowError(string.Format("Không thể phân công giảng viên {0} dạy lớp học phần {1} được.\nChi tiết lỗi: {2}",
                    giangVien.GiangVienDesc, _LopHocPhan.TenLopHocPhan, exc.Message));
            }
            #endregion
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
